Skip to content

Release v0.0.16#17

Merged
akatz-ai merged 32 commits intomainfrom
dev
Jan 23, 2026
Merged

Release v0.0.16#17
akatz-ai merged 32 commits intomainfrom
dev

Conversation

@akatz-ai
Copy link
Copy Markdown
Member

@akatz-ai akatz-ai commented Jan 23, 2026

Summary

  • Version bump: 0.0.15 → 0.0.16
  • Core dependency: comfygit-core 0.3.11 → 0.3.13

Features

  • E2E testing infrastructure with Playwright (global setup/teardown, cached ComfyUI fixture)
  • Download-intent-only workflow improvements (skip Models step, show models to download in Review)
  • Analysis step button text clarity improvements

Bug Fixes

  • Include download intents in is_fully_resolved check
  • Fix navigation and stats logic alignment with step visibility
  • Cross-platform compatibility improvements
  • Test state leakage prevention between tests

Testing

  • Add regression tests for property_download_intent in analyze endpoint
  • Add E2E test for download-intent-only workflow resolution flow
  • Harness scripts and workspace template fixtures

Test plan

  • Frontend builds successfully with new version
  • Unit tests pass
  • E2E tests pass (where applicable)

- Configure beads with dedicated beads-sync branch for issue data
- Keep JSONL files separate from code branches via .git/info/exclude
- Add AGENTS.md with landing-the-plane instructions
- Set up merge driver for JSONL conflict resolution
Align harness workspace creation with template tarball fixtures to unblock template packaging.
Add Claude/meow-driven E2E testing framework:
- specs/schema.yaml: Spec format reference for writing test workflows
- specs/navigate-all-sections.yaml: Comprehensive navigation smoke test
- README.md: Documentation for spec-driven browser automation

Also updates uv.lock format and ignores .meow/ runtime directory.
Generated test scripts that pass with agent-browser:
- open-panel.sh: Basic smoke test opening the ComfyGit panel
- navigate-all-sections.sh: Comprehensive navigation through all 8 sections

Both tests use the snapshot/ref approach with fallback for
handling strict mode violations from duplicate text elements.

Test results: 2/2 passed
- open-panel: ~4s
- navigate-all-sections: ~8.5s
- Add browserflow.yaml config with claude-cli adapter
- Add panel-navigation.yaml spec testing all main sections
- Update .gitignore to exclude .browserflow/, node_modules/, packages/

Spec covers: opening panel, navigating to Workflows, Models, Branches,
History, Nodes, Remotes, and Export sections with verification steps.
- Create idempotent setup script (e2e/scripts/setup-fixtures.sh)
- Pre-populate ComfyUI cache to avoid re-cloning (~500MB saved per run)
- Share UV cache across fixtures (avoids re-downloading PyTorch ~2GB)
- Generate fixture workspaces with git history for testing
- Support --reset flag for recreating fixtures

The script:
- Clones ComfyUI v0.4.0 once to .comfyui-base/
- Creates fixture workspaces under e2e/fixtures/
- Pre-populates comfygit cache matching core library format
- Initializes git repo with 2 commits and 2 branches
- Is idempotent (safe to run multiple times)

Reduces test setup time from ~10 min to ~30 sec per fixture.
- Replace date -Iseconds with portable date format for macOS compatibility
- Update commit count comment to reflect actual 3 commits created
- Add e2e/global-setup.ts: verifies fixture, resets git state, starts
  ComfyUI via `cg run -e default --no-sync`, polls /api/system_stats
  until ready, stores PID for teardown
- Add e2e/global-teardown.ts: reads PID, kills process group for clean
  shutdown, resets git state for next run
- Update playwright.config.ts with globalSetup, globalTeardown, and
  120s globalTimeout
- Add .comfyui-pid to e2e/.gitignore

Implements bead cgm-v9d.3
The -e flag must come before the subcommand: `cg -e default run`
not `cg run -e default`
- Add --cpu flag to cg run command to force CPU mode
- Set CUDA_VISIBLE_DEVICES='' to prevent PyTorch CUDA init
- This avoids driver version mismatch issues in test fixtures
The analyze_workflow endpoint's is_fully_resolved calculation did not
account for download intents, causing the resolve modal to incorrectly
show "All dependencies resolved" when models still needed downloading.

Changes:
- Add download_intents_count that includes both download_intent and
  property_download_intent match types
- Include download_intents_count == 0 in is_fully_resolved condition
- Fix resolve_workflow_with_downloads to handle property_download_intent

This fixes the contradiction where workflow details showed models as
"Downloadable" but the resolve modal said "All dependencies resolved".
…dpoint

Add TestPropertyDownloadIntentRegression class with 3 tests that verify:
- is_fully_resolved is False when models have property_download_intent
- download_intents stat counts both download_intent and property_download_intent
- is_fully_resolved is True only when there are no download intents

These tests guard against the bug where the analyze endpoint incorrectly
reported "All dependencies resolved!" when models needed downloading.
The test_end_to_end_system_node_symlink_flow test expects EnvironmentFactory.create
to automatically symlink system nodes into custom_nodes/. However, the comfygit-core
library currently installs comfygit-manager as a tracked node directly instead.

Skip this test with a note that it requires core library changes. The underlying
SystemNodeSymlinkManager functionality is still tested by the unit test
test_system_node_symlink_manager_creates_links which passes.
Remove Models step from workflow resolution wizard when there are only
download intents (no user choices needed). Users now only see steps
where they have actual decisions to make, improving UX by eliminating
unnecessary clicks.

Modified workflow step logic to only show Models step when
needsModelResolution is true (unresolved or ambiguous models),
removing hasDownloadIntents condition.

Resolves cgm-yah
The Review step now correctly shows pending download intents in the
"X to download" summary count. Previously only explicit user download
choices were counted, causing confusion when download intents would
actually be downloaded on "Apply Resolution".

Fixes cgm-447
Fix critical bugs found in self-review:

1. Navigation logic (line 758) was trying to navigate to 'models' step
   when hasDownloadIntents was true, but that step no longer exists
   in wizardSteps array. This would cause navigation errors.

2. Button text (line 343) was showing "Continue to Models" when only
   download intents exist, but Models step is now skipped. Updated to
   match step visibility logic.

3. Stats computation (line 695) was including models stats for a step
   that doesn't exist. Updated to only compute stats when Models step
   is actually shown.

All three fixes ensure consistent behavior: Models step only appears
when needsModelResolution is true (unresolved/ambiguous models).
Add detailed download intent display in the workflow resolution Review step:
- New "Models to Download" section showing pending downloads with:
  - Model filename
  - Target path
  - Truncated URL (full URL shown in tooltip on hover)
- Items cancelled/skipped by user are automatically excluded
- Section only appears when there are pending downloads

Implementation:
- Added pendingDownloadsForReview computed property
- Added truncateUrl helper function
- Added template section with download-details styling
- Added CSS for .download-details, .download-item, .download-meta, .download-url

Closes cgm-n2o
Added clarifying comment to handleContinueFromAnalysis explaining
that Models step is only shown when user needs to make choices.
Download intents don't require user input so they skip to Review.

Resolves: cgm-xii
- Add nextStepFromAnalysis computed to determine destination step
- Update Continue button to show "Continue to Review →" when skipping to Review
- Update banner text to match button behavior
- Improves UX by clarifying where user is navigating

Resolves: cgm-29f
Tests the UX flow where workflows with only download intents skip the
Models step and show accurate counts in Review:

- Verifies Analysis step shows correct pending download count
- Verifies Continue button skips Models step (goes to Review)
- Verifies Review shows correct "X to download" count
- Verifies "Models to Download" section shows download details
- Verifies wizard stepper excludes Models step

Uses Playwright route interception to mock API responses.
Add autouse fixture that resets _init_task_state to idle before each
panel integration test. This prevents test order-dependent failures when
tests modify the global initialization state.
…ch types

Frontend downloadIntentModels computed only checked for 'download_intent'
but backend returns two match types for download intents:
- 'download_intent': from pyproject.toml model entries
- 'property_download_intent': from workflow node properties (embedded URLs)

This caused Review step to show "0 to download" and hide the "Models to
Download" section for workflows with property_download_intent models.

Also updates E2E test to mock both match types to prevent regression.

Resolves: cgm-447 (post-implementation fix)
- Bump comfygit-manager version from 0.0.15 to 0.0.16
- Update comfygit-core dependency from 0.3.11 to 0.3.13
- Rebuild frontend with new version
- Remove unused `original_state` variable (ruff F841)
- Update docs link from comfyhub.org to docs.comfygit.org
@akatz-ai akatz-ai merged commit 6afb439 into main Jan 23, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant